package com.tju.resource.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import java.util.Date;
import java.util.List;

/**
 * 物料表
 *
 * @TableNme tb_material
 */
@Data
public class TbMaterial {
    /**
     * 物料 ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 物料编号
     */
    @Length(max = 255,  message = "物料编号不能超过{max}字符")
    private String matlNumber;

    /**
     * 物料名称
     */
    @Length(max = 255,  message = "物料名称不能超过{max}字符")
    private String matlName;

    /**
     * 模具编号
     */
    @TableField(exist = false)
    private String sharperSerialNumber;

    /**
     * 模具名称
     */
    @TableField(exist = false)
    private String sharperName;

    /**
     * 供应商代码
     */
    private String supCode;

    /**
     * 物料批次号
     */
    @Length(max = 255,  message = "物料批次号不能超过{max}字符")
    private String matlPart;

    /**
     * 物料单重
     */
    private Double matlWeight;

    /**
     * 物料重量单位
     */
    @Length(max = 255,  message = "物料重量单位不能超过{max}字符")
    private String matlUnit;

    /**
     * 预热事件
     */
    private Integer matlPrewarm;

    /**
     * 物料所在位置
     */
    @Length(max = 255,  message = "物料所在位置不能超过{max}字符")
    private String matlPosi;

    /**
     * 物料生产日期
     */
    private Date matlProd;

    /**
     * 物料有效日期
     */
    private Date matlDate;

    /**
     * 物料来源
     */
    @Length(max = 255,  message = "物料来源不能超过{max}字符")
    private String matlSrc;

    /**
     * 创建者
     */
    private String createBy;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 更新者
     */
    private String updateBy;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 颜色
     */
    @Length(max = 100,  message = "物料颜色不能超过{max}字符")
    private String color;

    /**
     * 模具id
     */
    private Long sid;

    /**
     * 额定工时
     */

    private String workTime;

    /**
     * 水口添加比例
     */
    private String wdPercent;

    /**
     * 水口重量
     */
    private Double wdWeight;

    /**
     * 物料总重
     */
    private String matlTotWgh;

    /**
     * 穴数
     */
    @Length(max = 255,  message = "物料穴数不能超过{max}字符")
    private String holeNum;

    /**
     * 客户
     */
    private Long custId;

    /**
     * 材质
     */
    @Length(max = 255,  message = "物料材质不能超过{max}字符")
    private String material;

    /**
     * 成品数量
     */
    @Max(value = 2147483647, message = "成品数不能大于{value}")
    @Min(value =-2147483648, message = "成品数不能小于{value}")
    private Long fpPcs;

    /**
     * 半成品数量
     */
    @Max(value = 2147483647, message = "半成品数不能大于{value}")
    @Min(value =-2147483648, message = "半成品数不能小于{value}")
    private Long spPcs;

    /**
     * 数量单位
     */
    private String pcsUnit;
    /**
     * 物料类型(0:成品,1:半成品)
     */
    private String type;
    /**
     * 生产计划使用过(0:没有1:有)
     */
    private int isUsed;
    /**
     * 起斤量
     */
    private Double minWeight;

    /**
     * 上机费
     */
    private Double compensate;
    /**
     * 喷涂颜色编号
     */
    private Integer sprayingColorNumber;

    /**
     * 产品材质(适用于何种材质的产品/物料)
     */
    private String useMatl;
    /**
     * 镭雕内容编号
     */
    private Integer radiumCarvingNumber;

    /**
     * 食品级
     */
    private String foodGrade;
    /**
     * 埋射配件
     */
    private String buriedShot;
    /**
     * 电镀
     */
    private String electroplate;

    /**
     * 印刷内容编号
     */
    private Integer printingNumber;

    /**
     * 单价
     * */
    private Double unitVal;

    /**
     * 订单数
     */
    @TableField(exist = false)
    private Long orderPcs;
    /**
     * 交期
     */
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date delivery;

    /**
     * 订单缺数量
     */
    @TableField(exist = false)
    private Long lackPcs;
    /**
     * 全部重量
     */
    @TableField(exist = false)
    private Double weight;
    /**
     * 需要重量
     */
    @TableField(exist = false)
    private Double needWeight;
    /**
     * 原料id
     */
    @TableField(exist = false)
    private List<TbRmMatl> rmMatlList;
    /**
     * 原材料
     */
    @TableField(exist = false)
    private List<TbRawMatl> rawMatlList;
    /**
     * 耗材id
     */
    @TableField(exist = false)
    private List<TbMatlConsumables> matlConsumablesList;
    /**
     * 耗材
     */
    @TableField(exist = false)
    private List<TbConsumables> consumablesList;
    /**
     * 关联订单id
     */
    @TableField(exist = false)
    private Long oIdMatlId;

    /**
     * 订单完成数
     */
    @TableField(exist = false)
    private Long finishQuantity;
    /**
     * 未完成订单数
     */
    @TableField(exist = false)
    private Long unFinishQuantity;
    /**
     * 缓存寿命
     */
    @TableField(exist = false)
    private Long withholdingLife;
    /**
     * 剩余寿命
     */
    @TableField(exist = false)
    private Long residualLife;
    /**
     * 初始寿命
     */
    @TableField(exist = false)
    private Long initialLife;
    /**
     * 耗材类型 (0:耗材分配 1: 包装分配)
     */
    @TableField(exist = false)
    private Integer consumablesType;
}